package com.css.fxfzaqbz.modules.data.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.css.fxfzaqbz.constants.YNEnum;
import com.css.fxfzaqbz.modules.data.entity.GasstationData;
import com.css.fxfzaqbz.modules.data.queryParams.GasstationDataQueryParams;
import com.css.fxfzaqbz.modules.data.repository.GasstationDataRepository;
import com.css.fxfzaqbz.modules.data.service.GasstationDataService;
import com.css.fxfzaqbz.util.FileUtil2;
import com.css.fxfzaqbz.util.PlatformDateUtils;
import com.css.fxfzaqbz.util.PlatformPageUtils;
import com.css.fxfzaqbz.util.UUIDGenerator;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.List;

@Service
public class GasstationDataServiceImpl implements GasstationDataService {
    @Resource
    GasstationDataRepository gasstationDataRepository;

//    @Override
//    public GasstationDataVO updateGasstationData(GasstationDataVO gasstationDataVO) {
//
//        GasstationDataVO elevationVO1 = gasstationDataRepository.updateGasstationData(gasstationDataVO);
//
//        return elevationVO1;
//    }

    @Override
    @Transactional
    public GasstationData saveGasstationData(GasstationData gasstationData) {
        gasstationData.setGsId(UUIDGenerator.getUUID());
        gasstationData.setGsStatus(YNEnum.Y.toString());
        gasstationData.setGsCreatetime(PlatformDateUtils.getCurrentTimestamp());
        return gasstationDataRepository.saveGasstationData(gasstationData);
    }

    @Override
    public JSONObject getAllGasstationData(GasstationDataQueryParams queryParams) {
        return PlatformPageUtils.formatPageData(gasstationDataRepository.getAllGasstationDataParams(queryParams));
    }

    @Override
    public GasstationData getGasstationDataById(String id) {
        GasstationData gasstationData = gasstationDataRepository.getGasstationDataById(id);
        return gasstationData;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteGasstationDatas(List<String> ids) {
        Timestamp currentTimestamp = PlatformDateUtils.getCurrentTimestamp();
        gasstationDataRepository.deleteGasstationDatasById(ids,currentTimestamp);
    }

    @Override
    public List<GasstationData> getAll() {
        return gasstationDataRepository.getAll();
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void importExcel(MultipartFile file) throws IOException {
        List<GasstationData> gasstationData = FileUtil2.importExcel(file, GasstationData.class);

        for(int i = 0 ; i<gasstationData.size();i++){
            gasstationData.get(i).setGsId(UUIDGenerator.getUUID());
            gasstationData.get(i).setGsCreatetime(PlatformDateUtils.getCurrentTimestamp());
            gasstationData.get(i).setGsStatus(YNEnum.Y.toString());

        }
        gasstationDataRepository.importExcel(gasstationData);
    }
}
